﻿using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Zhaoxi.SqlSugar.Common;

namespace Zhaoxi.SqlSugarAdvanced
{
    public class LibraryTableInfo
    {
        /// <summary>
        /// 数据库表操作
        /// </summary>
        public static void Show()
        {
            // 连接配置对象 - 这个配置要比EFCore简单很多
            ConnectionConfig connectionConfig = new ConnectionConfig()
            {
                ConnectionString = CustomConnectionConfig.ConnectionString001, // 数据库连接字符串
                IsAutoCloseConnection = true, // 是否自动关闭连接
                DbType = DbType.SqlServer // 数据库类型
            };
            using (SqlSugarClient db = new SqlSugarClient(connectionConfig)) // 创建数据库上下文对象
            {
                Console.WriteLine("获取数据库列表-获取所有数据库============================");
                foreach (var item in db.DbMaintenance.GetDataBaseList(db)) // 获取数据库列表
                {
                    Console.WriteLine(item); // 输出数据库名称
                }

                Console.WriteLine("获取视图列表-获取链接数据库视图============================");
                foreach (var item in db.DbMaintenance.GetViewInfoList(false)) // 获取视图列表
                {
                    Console.WriteLine(item.Name); // 输出视图名称
                }

                Console.WriteLine("获取表信息列表============================");
                foreach (var item in db.DbMaintenance.GetTableInfoList(false)) // 获取表信息列表
                {
                    Console.WriteLine(item.Name); // 输出表名称
                }

                Console.WriteLine("获取表的自增列信息============================");
                foreach (var item in db.DbMaintenance.GetIsIdentities("CodeFirstTable3")) // 获取表的自增列信息
                {
                    Console.WriteLine(item); // 输出自增列信息
                }

                Console.WriteLine("获取表的主键信息============================");
                foreach (var item in db.DbMaintenance.GetPrimaries("CodeFirstTable3")) // 获取表的主键信息
                {
                    Console.WriteLine(item); // 输出主键信息
                }

                if (db.DbMaintenance.IsAnyTable("CodeFirstTable3", false)) // 判读表是否存在
                {
                    db.DbMaintenance.DropTable("CodeFirstTable3"); // 如果存在就删除表
                }

                //db.DbMaintenance.DropTable("CodeFirstTable3"); // 删除表（如果存在）

                //.....
            }
        }
    }
}
